﻿//*********************************************************//
//    Copyright (c) Microsoft. All rights reserved.
//    
//    Apache 2.0 License
//    
//    You may obtain a copy of the License at
//    http://www.apache.org/licenses/LICENSE-2.0
//    
//    Unless required by applicable law or agreed to in writing, software 
//    distributed under the License is distributed on an "AS IS" BASIS, 
//    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 
//    implied. See the License for the specific language governing 
//    permissions and limitations under the License.
//
//*********************************************************//

using System.Collections.Generic;
using System.Runtime.InteropServices;
using System.Security;

namespace Microsoft.NodejsTools.Debugger.Serialization {
    /// <summary>
    /// Performs natural string compare.
    /// </summary>
    sealed class NaturalSortComparer : IComparer<string> {
        public int Compare(string x, string y) {
            return SafeNativeMethods.StrCmpLogicalW(x, y);
        }

        [SuppressUnmanagedCodeSecurity]
        private static class SafeNativeMethods {
            [DllImport("shlwapi.dll", CharSet = CharSet.Unicode)]
            public static extern int StrCmpLogicalW(string psz1, string psz2);
        }
    }
}